#include<bits/stdc++.h>
using namespace std;
typedef long long ll;

bool check(vector<int> p0,vector<int> p1,vector<int> p2,vector<int> p3,vector<int> k,vector<int> nums){
    vector<int> temp=p1;
    while(k[0]--){
        vector<int> temp1=p1;
        for(int i=0;i<5;i++){
            p1[i]=temp1[temp[i]];
        }
    }
    temp=p2;
    while(k[1]--){
        vector<int> temp1=p2;
        for(int i=0;i<5;i++){
            p2[i]=temp1[temp[i]];
        }
    }
    temp=p3;
    while(k[2]--){
        vector<int> temp1=p3;
        for(int i=0;i<5;i++){
            p3[i]=temp1[temp[i]];
        }
    }
    temp=p0;
    for(int i=0;i<5;i++){
        p0[i]=temp[p1[i]];
    }
    temp=p0;
    for(int i=0;i<5;i++){
        p0[i]=temp[p2[i]];
    }
    temp=p0;
    for(int i=0;i<5;i++){
        p0[i]=temp[p3[i]];
    }
    for(int i=0;i<5;i++){
        if(p0[i]!=nums[i])return false;
    }
    return true;
}

void solve() {
    int n,m;
    cin>>n>>m;
    n=5,m=3;
    vector<int> nums(n);
    vector<int> k(m);
    for(int i=0;i<n;i++){
        cin>>nums[i];
    }
    for(int i=0;i<m;i++){
        cin>>k[i];
    }
    vector<int> p0(5),p1(5),p2(5),p3(5);
    for(int i=0;i<5;i++){
        p0[i]=i;
        p1[i]=i;
        p2[i]=i;
        p3[i]=i;
    }
    int cnt=0;
    int t1=120;
    while(t1--){
        int t2=120;
        while(t2--){
            int t3=120;
            while(t3--){
                int t4=120;
                while(t4--){
                    if(check(p0,p1,p2,p3,k,nums))cnt++;
                    next_permutation(p3.begin(),p3.end());
                }
                next_permutation(p2.begin(),p2.end());
            }
            next_permutation(p1.begin(),p1.end());
        }
        next_permutation(p0.begin(),p0.end());
    }
    cout<<cnt<<'\n';
}

int main(){
    ios::sync_with_stdio(0);
    cin.tie(0),cout.tie(0);
    int _=1;
    cin>>_;
    while(_--){
        solve();
    }
}